package br.com.esporte.view.site.grupo.listar;

import java.util.ArrayList;
import java.util.List;

import br.com.esporte.exception.ViewException;
import br.com.esporte.model.Grupo;
import br.com.esporte.model.TipoEsporteEnum;
import br.com.esporte.persistence.filter.FiltroGrupo;
import br.com.esporte.view.site.component.listaGrupo.IPaginaAcaoGrupo;
import br.com.esporte.view.site.component.listaGrupo.ListGrupoComponent;
import br.com.esporte.view.site.grupo.PaginaGrupo;
import br.com.esporte.view.site.grupo.comunidade.atualizacao.PaginaListarAtualizacaoComunidade;
import br.com.esporte.view.site.grupo.preview.PaginaPreView;
/**
 * 
 * @author Milton Domingues
 *
 */
public class PaginaListarGrupo extends PaginaGrupo implements IPaginaAcaoGrupo {

	private static final String LIST_GRUPO_ID = "listGrupo";

	public PaginaListarGrupo(TipoEsporteEnum tipoEsporteGrupo) {
		super(tipoEsporteGrupo);
	}

	@Override
	public void acaoGrupo(Grupo grupo) {
		try{
			setResponsePage(new PaginaListarAtualizacaoComunidade(grupo));
		}catch (ViewException e) {
			setResponsePage(new PaginaPreView(grupo, this));
		}

	}

	private ListGrupoComponent criarContainerListGrupo(){
		ListGrupoComponent list = new ListGrupoComponent(LIST_GRUPO_ID, getGrupos(getTipoEsporte()), this);
		return list;
	}

	private List<Grupo> getGrupos(String codigoTipoEsporte) {
		FiltroGrupo filtro = new FiltroGrupo();
		filtro.addEquals(FiltroGrupo.TIPO, TipoEsporteEnum.getTipoCodigo(codigoTipoEsporte));
		List<Grupo> grupos = getFachada().consultar(filtro);
		List<Grupo> gruposGeneric = new ArrayList<Grupo>();
		for (Grupo grupo : grupos) {
			gruposGeneric.add(grupo);
		}
		return gruposGeneric;
	}

	@Override
	public void montarPagina() {
		super.montarPagina();
		addContainer(criarContainerListGrupo());
	}

}
